请问在C++中 "::" 和 "." 和 "->" 三者的区别,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/05 03:00:17
最近在看vc6和vc++2005,对于 "::" 和 "." 和 "->" 有点糊涂,谢谢哪位高手帮忙说说,能具体点就更好了...thanks
是不是名称空间和类用"::",对象用".",指针用"->"????

初学的话给你说概念越说越迷糊,下面举例子来说,看代码:

-------------------------------------

#include <iostrem.h>

namespace myns {

class clsA {
protected:
static int m_ia;
public:
int m_ib;
public:
clsA():m_ib(0) {};
~clsA() {};
};

int clsA::m_ia=32; // 正确。m_ia是类clsA的静态变量,需要在类定义域外部初始化。

}

int myns::clsA::m_ia=32; // 同样正确,理由同上。但是m_ia只能初始化一次,因此本行与上一行仅能二者取其一。

void main()
{
myns::clsA c1; // 正确。类clsA定义在名字空间myns中,cl为clsA类型的变量。
cl.m_ib = 1; // 正确。点操作符用于引用类实例的成员。

using namespace myns;
clsA *pc1 = NULL; // 正确。先声明名字空间myns,然后可以直接声明其中定义的类的实例或指向他们的指针。
pc1 = &c1; // 取c1的地址赋值给pc1。
pc1->m_ib = 2; // 正确。箭头操作符用于引用指针对象的成员。

cout << c1.m_ib; // 输出2。

cout << c1.m_ia; // 错误,不能引用类中的保护成员。
cout << c1->m_ib; // 错误。箭头操作符不能引用非指针对象的成员。
cout << pc1.m_i